package entities;


import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

@Entity
@Table (name = "Envios")
public class Envio extends EntidadBase {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Id 
	@Column (name = "idEnvio")
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int nroEnvio;
	private float monto;
	private int volumen;
	private boolean pendiente;
	
	@OneToMany (cascade = CascadeType.ALL)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinColumn (name = "idEnvio")
	private List<ItemPedido> items;
	
	@OneToMany(cascade = CascadeType.REMOVE)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinColumn (name = "idEnvio")
	private List<Factura> facturas;
	
	@ManyToOne
	@JoinColumn (name="idPedido")
	private PedidoCliente pedido;
	
	public Envio(){
		items = new ArrayList<ItemPedido>();
		facturas = new ArrayList<Factura>();
		pendiente = false;
	}

	public int getNroEnvio() {
		return nroEnvio;
	}

	public void setNroEnvio(int nroEnvio) {
		this.nroEnvio = nroEnvio;
	}

	public float getMonto() {
		return monto;
	}

	public void setMonto(float monto) {
		this.monto = monto;
	}

	public int getVolumen() {
		return volumen;
	}

	public void setVolumen(int volumen) {
		this.volumen = volumen;
	}

	public boolean isPendiente() {
		return pendiente;
	}

	public void setPendiente(boolean pendiente) {
		this.pendiente = pendiente;
	}

	public List<ItemPedido> getItems() {
		return items;
	}

	public void setItems(List<ItemPedido> items) {
		this.items = items;
	}

	public List<Factura> getFacturas() {
		return facturas;
	}

	public void setFacturas(List<Factura> facturas) {
		this.facturas = facturas;
	}

	public PedidoCliente getPedido() {
		return pedido;
	}

	public void setPedido(PedidoCliente pedido) {
		this.pedido = pedido;
	}

}
